package com.oa.service;

import com.oa.pojo.Leave;
import com.oa.pojo.PageBean;
import com.oa.pojo.Reimbursement;
import org.apache.ibatis.annotations.Param;

import java.text.ParseException;
import java.util.Map;

public interface ReimbursementService {
    // 根据部门ID获取部门领导ID
    String getDeptLeaderID(@Param("deptId") String deptId);

    // 根据部门ID获取上级部门的部门ID
    String getHigherLevelDeptId(@Param("deptId") String deptId);

    // 根据部门ID获取上级部门领导的ID
    String getHigherLevelDeptLeaderId(@Param("deptId") String deptId);

    // 根据进程ID更新办理人以及任务ID
    int updateAssigneeAndTask(
            @Param("insId") String insId,
            @Param("taskId") String taskId,
            @Param("assignee") String assignee);

    // 开启流程与提交申请
    void startProcess(Reimbursement reimbursement) throws ParseException;

    // 根据用户ID查询当前用户发起的任务
    PageBean<Reimbursement> queryMyInitiate(@Param("initiator") String initiator);

    // 查看我已审核的任务
    PageBean<Reimbursement> queryMyReviewed(@Param("assignee") String assignee);

    // 查询待我审批的任务
    PageBean<Reimbursement> queryWaitMyApprove(String assigneeId, int page, int limit);

    // 查询待我审批的任务详情
    Reimbursement queryMyTaskByTaskId(@Param("taskId") String taskId);

    // 根据流程实例ID更新状态
    void updateStatusByInstanceId(@Param("procInstId") String procInstId, @Param("status") String status);

    // 审批我的业务
    void completeMyApprove(Map data);

    // 根据任务ID查看申请报销的金额
    Double queryMoney(@Param("proInsID") String proInsID);

    // 获取当前办理人
    String getAssigneeByProcInstId(@Param("proInsID") String proInsID);
}
